Skip to content

chore(release): 2.0.0-rc.5 - #388

Merged
rahlk merged 1 commit into
release/2.0from
chore/release-2.0.0-rc.5
Sep 10, 2026
Merged

rahlk merged 1 commit into
release/2.0from
chore/release-2.0.0-rc.5

Conversation

@rahlk

@rahlk rahlk commented Sep 10, 2026

Copy link
Copy Markdown
Collaborator

Cuts 2.0.0-rc.5 off release/2.0, which now carries both #385 and #387.

Touches exactly three files, the same three as every prior rc bump: pyproject.toml,
uv.lock, CHANGELOG.md.

What rc.5 carries

The analyzer pins (#384, merged as 5414c03) — codeanalyzer-python==1.5.1,
codeanalyzer-java==3.1.2, codeanalyzer-typescript==1.5.3. All three shipped the same fix
in lockstep: param_in/param_out edges now name the bound formal in var. Measured on an
rc.4 graph, var was null on 4 of 4 PY_PARAM_IN and 6 of 6 PY_PARAM_OUT while all 44
PY_DDG carried it, so a consumer predicate on var evaluated to null on every edge crossing
a call boundary — and under three-valued logic an all() over that null excludes the whole
path, turning an interprocedural flow into a proved absence of flow. No analyzer floor moves;
the fix only adds a property, so raising a floor would refuse graphs that still work.

The mirror relax (#386, merged as 96c0a7b) — _Base in cldk/models/java and
cldk/models/typescript goes from extra="forbid" to extra="ignore", plus JCompilationUnit,
which overrides model_config wholesale and so never inherited it. JCallableOverview and
JClassOverview keep forbid: nothing calls model_validate on them, so strictness there
catches our own typo'd kwarg rather than the analyzer's additions.

Verification

No CI reported on either merged PR, so the gate ran locally on this exact tree:

1599 passed, 370 skipped, 11 warnings in 152.94s
Required test coverage of 50% reached. Total coverage: 85.16%

After merge

Tag v2.0.0-rc.5 on release/2.0, which fires the release workflow. main stays on the 1.x
line — every rc so far has been cut from release/2.0, and main is 222 commits behind it.

Takes up the analyzer pins (codeanalyzer-python 1.5.1, codeanalyzer-java
3.1.2, codeanalyzer-typescript 1.5.3) and the schema-mirror relax from
extra="forbid" to extra="ignore".

The changelog entry states the cost of the relax rather than only its
benefit: forbid was the drift detector, and under ignore an analyzer
addition is absorbed silently. It also records what the relax does not
cost — extra does not govern required fields, so a 1.x analysis.json is
still refused rather than parsed.
@rahlk
rahlk merged commit 26f2bd8 into release/2.0 Sep 10, 2026
@rahlk
rahlk deleted the chore/release-2.0.0-rc.5 branch September 10, 2026 09:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant